package JZ.JZ13;

/**
 * JZ13 调整数组顺序使奇数位于偶数前
 * https://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593?tpId=13&&tqId=11166&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
 * 题目描述
 * 输入一个整数数组，实现一个函数来调整该数组中数字的顺序，
 * 使得所有的奇数位于数组的前半部分，所有的偶数位于数组的后半部分，
 * 并保证奇数和奇数，偶数和偶数之间的相对位置不变。
 * 题解：
 *  使用冒泡排序，当相邻两个数分别一个是奇数一个是偶数，则交换之
 * @author corn
 * @create 2020-11-01-9:25
 */
public class Solution {
    public void reOrderArray(int[] array) {
        //用于记录当前循环内是否有交换情况，有则继续，无则说明已经排序好
        boolean changed = true;
        for (int i = 0; i < array.length && changed; i++) {
            changed = false;
            for (int j = 0; j < array.length - 1 - i; j++) {
                // 左边是奇数右边是偶数的情况交换
                if ((array[j] & 1) == 0 && (array[j + 1] & 1) == 1) {
                    changed = true;
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }
}
